/**
 * \file:   STOCK2.c
 * \author: ONUR & nael
 */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "categorie.h"
#include "produit.h"
#include "stock.h"
#include "typesprimitifs.h"
#include "commande.h"

void reduire_validation(POINTEUR_COMMANDE pc){
     int i;
     for (i=0;i<=49;i++) 
     {
         if (pc->lignes[i]){ reduire_quantite_disponible(pc->lignes[i]->quantite, pc->lignes[i]->p);}
                }
}
void save_stock(POINTEUR_LISTE_PRODUIT plp) {
    FILE* fichier = NULL;
    POINTEUR_LISTE_PRODUIT temp = plp;
    fichier = fopen("stock.txt", "w+");

    if (fichier != NULL) {
        do {

            fprintf(fichier, " %u   ", temp->pproduit->ID);
            fprintf(fichier, " %s    ", temp->pproduit->nom);
            fprintf(fichier, " %d    ", temp->pproduit->categorie);
            fprintf(fichier, " %f    ", temp->pproduit->prix_u);
            fprintf(fichier, " %u    ", temp->pproduit->quantite_disponible);
            fputs("\n", fichier);
            temp = plp->suivant;
        } while (temp->suivant != NULL);
        while (plp != NULL) {
            temp = plp->suivant;
            free(plp);
            free(plp->pproduit);
            plp = temp;
        }
        fclose(fichier);
    } else {
        printf("Impossible d'ouvrir le fichier stock.txt");
    }
}

void afficher_stock(POINTEUR_LISTE_PRODUIT plp) {
    while (plp != NULL) {
        printf("Id :%u, nom :%s, categorie: %s, prix unitaire :%f, quantite disponible: %u\n",
                plp->pproduit->ID, plp->pproduit->nom, donner_nom_categorie(plp->pproduit->categorie),
                plp->pproduit->prix_u, plp->pproduit->quantite_disponible);
        plp = plp->suivant;
    }
}

POINTEUR_LISTE_PRODUIT charger_liste_produit() {
    FILE* fichier;
    CHAINE chaine;
    CHAINE nom_categorie;
    POINTEUR_LISTE_PRODUIT liaison = NULL;

    fichier = fopen("stock.txt", "r");

    if (fichier != NULL) {
        while (fgets(chaine, MAX_CHAR, fichier) != NULL) {
            POINTEUR_PRODUIT pp = malloc(sizeof (*pp));
            POINTEUR_LISTE_PRODUIT plp = malloc(sizeof (*plp));
            sscanf(chaine, "%u %s %s %lf %u", &pp->ID, &pp->nom[0], &nom_categorie[0],
                    &pp->prix_u, &pp->quantite_disponible);
            pp->categorie = donner_categorie(nom_categorie);

            plp->pproduit = pp;
            plp->suivant = liaison;
            liaison = plp;
        }
        fclose(fichier);
        return liaison;
    } else {
        printf("Impossible d'ouvrir le fichier stock.txt");
        /*POINTEUR_LISTE_PRODUIT plp = malloc(sizeof (*plp));
        return plp = NULL; */
        return NULL;
    }
}
